خرید بک لینک
امکان داشتن اعضای static abstract در اینترفیسها شاید عجیب بهنظر برسد یا حتی غیرضروری؛ اما در C# 11، پایهی قابلیت جدیدی به نام «ریاضیات جنریک» شدهاست. به همین جهت در ابتدا نیاز است با اعضای static abstract آشنا شد و در قسمتی دیگر به «ریاضیات جنریک» پرداخت. مثالی جهت توضیح علت نیاز به اعضای static abstract در اینترفیسها فرض کنید قصد داریم حاصل جمع اعضای یک آرایهی int را محاسبه کنیم: namespace CS11Tests; public class StaticAbstractMembers { public static void Test() { var sum = AddAll(new[] { 1, 2, 3, 4 }); Console.WriteLine(sum); } private static int AddAll(int[] values) { int result = 0; foreach (var value in values) { result += value; } retu result; } } روش متداول اینکار را در اینجا ملاحظه میکنید که حلقهای بر روی عناصر آرایه، جهت یافتن حاصل جمع آنها تشکیل شدهاست. اکنون فرض کنید بجای آرایهای که در متد Test استفاده شده، از آرایهی زیر استفاده شود: var sum = AddAll(new[] { 1, 2, 3, 4, 0.68 }); اینبار با خطای زیر متوقف میشویم: Argument 1: caot convert from 'double[]' to 'int[]' [CS11Tests]csharp(CS1503) عنوان میکند که آرایهی مدنظر از نوع []double تشخیص داده شدهاست و متد AddAll، تنها آرایههای از نوع int را قبول میکند. در جهت رفع این مشکل شاید بهتر باشد نمونهی جنریک متد AddAll را ایجاد کنیم، تا بتوان انواع و اقسام نوعهای ممکن را به آن ارسال کرد: private static T AddAll<T>(T[] values) { T result = 0; foreach (var value in values)

برچسب: نویسنده: دانلودی تاريخ: جمعه 27 آبان 1401 ساعت: 21:05

PowerShell یک ابزار task automation است که همزمان یک command-line shell، زبان اسکریپتی و یک فریمورک configuration management نیز میباشد. برخلاف دیگر shellها که مبتنی بر رشته هستند، ورودی و خروجی آن اشیاء داتنتی است و از آنجائیکه مبتنی بر CLR میباشد، امکان نوشتن توابع، کلاسها و ماژولها را به ما میدهد. همچنین به صورت توکار امکان کار با فرمتهایی از قبیل CSV, XML, JSON را در اختیارمان قرار میدهد. بخاطر extensible بودن، تعداد زیادی ماژول و افزونه برای نصب وجود دارند که کار با انواع تکنولوژیها را میسر میسازند:  Azure Windows Exchange SQL AWS VMWare Google Cloud PowerShell در ابتدا در سال 2006 برای ویندوز XP به همراه 130 کامند ارائه شد. نسخههای بعدی آن نیز به ترتیب 2.0, 3.0, 4.0, 5.0 و در نهایت 5.1 به همراه تعداد بیشتری از Commandها ارائه شدند. تا اینجا فقط بر روی ویندوز استفاده بود، چون براساس Full .NET Framework توسعه داده شده بود، تا در نهایت در سال 2018 نسخه cross-platform آن یعنی نسخه 6.0 ارائه شد که مبتنی بر .NET Core 2 بود. در نسخه 6.2 تعداد Commandها به نصف تعداد نسخه 5.0 هم نمیرسید. در نهایت نسخه 7.0 ارائه شد که هم backward compatible بود و هم اینکه به صورت cross-platform نیز ارائه شد؛ لازم به ذکر است، این نسخه از PowerShell براساس .NET Core 3 توسعه یافت. PowerShell به صورت پیشفرض بر روی ویندوز ۷ (همچنین ویندوز ۲۰۰۸) به بعد، قابل نصب است. لازم به ذکر است که اسم پراسس PowerShell از نسخه ۷ به بعد از powershell.exe به pwsh.exe تغییر نام یافته است. بنابراین به صورت side-by-side در کنار PowerShell 5.1 قابل نصب است. ISE یا همان Integrated Scri

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

PowerShell برای نامگذاری Commandها، از ساختار verb-noun استفاده میکند. به عنوان مثال Get-Command, New-Service, Get-Help نمونههایی از این Commandها در PowerShell هستند. لازم به ذکر است که در PowerShell، منظور از cmdlet یا Command let، همان Commandهای native در PowerShell هستند؛ نه Commandهای عمومی مانند dir, cd, ipconfig و غیره. به عنوان مثال از Get-Help برای نمایش مستندات یک cmdlet میتوان استفاده کرد و دقیقاً مشابه man page در لینوکس است. Get-Help Get-Command با فلگ Online میتوان مستندات cmdlet موردنظر را درون مرورگر مشاهده کرد: Get-Help Get-Command -Online برای بیشتر cmdletها میتوانیم فیلتر نیز اعمال کنیم. به عنوان مثال با دستور زیر میتوان لیست تمام processهای سیستم را که به واژهی Process ختم میشوند، مشاهده کنیم: Get-Command -Name '*Process' خروجی دستور فوق، یک جدول به صورت زیر خواهد بود: CommandType Name Version Sour ce ----------- ---- ------- ---- Cmdlet Debug-Process 7.0.0.0 Mic… Cmdlet Enter-PSHostProcess 7.2.6.500 Mic… Cmdlet Exit-PSHostProcess 7.2.6.500 Mic… Cmdlet Get-Process 7.0.0.0 Mic… Cmdlet Start-Process 7.

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

مقدمه همانطور که میدانید، Blazor دارای یک سیستم لاگ گیری توکار است که میتوان از آن توسط تزریق ILogger در کامپوننتها بهره برد. این سیستم لاگ گیری در زمان توسعهی نرم افزار، در قالب یک کنسول، لاگها را به توسعه دهنده نشان میدهد. اما پس از تولید و پابلیش اپلیکیشن، دیگر این کنسول وجود ندارد. برای ذخیرهی لاگها در یک فایل متنی بر روی سرور هاست، میتوان از Serilog بهره برد که روش آن در اینجا  توضیح داده شده است. حال اگر بخواهیم این لاگها را در یک پایگاه داده ذخیره کنیم چطور؟ ایجاد کلاس لاگ برای این منظور ابتدا کلاسی را برای ذخیرهی لاگها در پایگاه داده به شکل زیر ایجاد مینماییم: public class DBLog { public int DBLogId { get; set; } public string? LogLevel { get; set; } public string? EventName { get; set; } public string? Message { get; set; } public string? StackTrace { get; set; } public DateTime CreatedDate { get; set; }=DateTime.Now; } ایجاد دیتابیس لاگر کلاس DBLogger از اینترفیس ILogger ارث بری میکند و دارای سه متد است که مهمترین آنها متد Log میباشد که درحقیقت با هر بار فراخوانی Logger در برنامه فراخوانی میشود. برای مطالعهی بیشتر در رابطه با دو متد دیگر میتوانید به اینجا مراجعه نمایید. public class DBLogger:ILogger { private bool _isDisposed; private readonly ApplicationDbContext _dbContext; public DBLogger(ApplicationDbContext dbContext) { _dbContext = dbContext ?? throw new ArgumentNullExcept

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

در PowerShell به صورت پیشفرض، خروجی، PowerShell Host یا همان کنسول است. PowerShell از چندین استریم پشتیبانی میکند: Success Error Waing Verbose Debug Information  برای هر کدام از استریمهای فوق یک آیدی اختصاص داده شدهاست که به ترتیب از 1 تا ۶ میباشد. همچنین برای هرکدام یک cmdlet مجزا وجود دارد: cmdlet  Name   Id  Write-Output  Success  1  Write-Error  Error  2  Write-Waing  Waing  3  Write-Verbose  Verbose  4  Write-Debug  Debug  5  Write-Information  Information  6 به جز دو مورد اول، بقیه cmdletها خروجی را به صورت پیشفرض درون کنسول نمایش نمیدهند. به عنوان مثال اسکریپت زیر را در نظر بگیرید: Write-Output 'Output' Write-Error 'This is an error' Write-Waing 'This is a waing' Write-Verbose 'This is verbose' Write-Debug 'This is Debug' Write-Information 'This is information' با اجرای اسکریپت فوق خروجی زیر را خواهیم داشت: Output Write-Error: This is an error WARNING: This is a waing همانطور که مشاهده میکنید سه cmdlet فوق، خروجی را درون کنسول نمایش ندادهاند. این رفتار توسط مفهومی تحت عنوان Action Preference قابل تنظیم است که در واقع یک Enum است با مقدار زیر:   6  Break رخداد به صورت عادی مدیریت شده و برنامه ادامه پیدا میکند  2  Continue به طور کلی از رخداد صرفنظر خواهد شد؛ بدون اینکه چیزی در استریم نمایش دا

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

در قسمت قبل به معرفی postgresql پرداختیم; در این قسمت قصد ایجاد و راه اندازی یک api با استفاده از دیتابیس postgresql و استفاده از تکنولوژیهای آن را با استفاده از docker داریم. ابتدا با استفاده از دستور زیر یک پروژهی جدید asp.net core را ایجاد کنید: dotnet new webapi --minimal -o YourDirectoryPath:YourFolderName سپس فایل docker-compose.yaml را به روت پروژه اضافه کنید که شامل کانفیگهای زیر میباشد:  version: '3.1' services: db: image: postgres container_name: db restart: always environment: POSTGRES_PASSWORD: postgres POSTGRES_USERNAME: postgres POSTGRES_DB: BloggingDb ports: - "5432:5432" volumes: - postgres_data:/data/db adminer: image: adminer restart: always ports: - 8080:8080 pgadmin4: image: dpage/pgadmin4 restart: always environment: PGADMIN_DEFAULT_EMAIL: [email protected] PGADMIN_DEFAULT_PASSWORD: admin PGADMIN_CONFIG_SERVER_MODE: 'False' ports: - 5050:80 volumes: - pgadmin:/var/lib/pgadmin depends_on: - db volumes: postgres_data: pgadmin: سپس با اجرای دستور زیر در روت پروژه، سرویسها را راه اندازی کنید:  docker compose up -d معرفی سرویسهای استفاده شده در تنظیمات فایل بالا:  سرویس db :  نمونه ایمیج اصلی، volume، تنظیمات coection string در آن استفاده شده است. سرویس adminer : https://hub.docker.com/_/a

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

در Asp.net core توسط IHttpContextAccessor  میتوان بهراحتی به HttpContext در هرجای برنامه دسترسی داشت و اطلاعات مورد نیاز را از قبیل نام کاربری، کوکیها، توکنها و ... به دست آورد. اما در Blazor Server برای استفاده از این قبیل اطلاعات توصیه شدهاست که اکیدا از IHttpContextAccessor در هرجایی از برنامه استفاده نشود؛ زیرا هیچ تضمینی وجود ندارد که در حالتهای مختلف، مقدار HttpContext معتبر باشد. برای کسب اطلاعات بیشتر در این باب میتوانید به Blazor and shared state و Accessing HttpContext.Items fails on WebKit browsers مراجعه نمایید. درکل Blazor Server خارج از چارچوب خط لوله ASP.NET Core اجرا میشود. اما اگر به هر دلیلی به دنبال اطلاعات خاصی از HttpContext در کامپوننتها باشیم چطور؟ آیا هیچ راهی وجود ندارد؟ برای دستیابی به HttpContext در Blazor Server فقط باید در زمان رندر شدن Host.cshtml_ مقدار(های) مدنظر را از HttpContext دریافت کرده و داخل متغیری ذخیره کنیم و در ادامهی برنامه از آن متغیر در قالب Cascading Parameters در کامپوننتها استفاده نماییم. روش کار به اینصورت است که ابتدا فایل Host.cshtml_ را به شکل زیر اصلاح میکنیم. در اینجا ما به دنبال اطلاعات توکن access_token میباشیم. @{ var token = await HttpContext.GetTokenAsync("access_token"); } <component type="typeof(App)" render-mode="ServerPrerendered" param-AccessToken="token" /> همانطور که ملاحظه مینمایید اطلاعات توکن access_token را داخل متغیر token ریخته و آنرا به param-AccessToken کامپوننت منتسب میکنیم. سپس به فایل App.razor رفته و متغیر AccessToken را به ع

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

اینطور که در این مطلب عنوان شده، ماوسهای قدیمی در اثر مشکلات سخت افزاری، میتوانند بهازای هر کلیک کاربر، دو سیگنال کلیک، ظرف مدت کوتاهی (برای مثال 5 میلی ثانیه) تولید کنند. برنامههای مبتنی بر Blazor، توسط متدهای نامتقارن میتوانند هردوی این سیگنالها را دریافت کرده و بنابراین متد مربوطه در کسری از ثانیه دوبار اجرا خواهد شد. برای رهایی از این مشکل میتوان از کدی شبیه زیر بهره جست: <button disabled="@_busy" Value="do-stuff" /> code{ private bool _busy = false; public async Task Handler() { if(_busy) retu; _busy = true; try { // do your thing } finally { _busy = false; } } } منطق آن ساده است؛ تا زمانی که اجرای متد، پایان نپذیرفتهاست، دکمهی مربوطه غیرفعال میگردد، تا نتوان دوباره روی آن کلیک کرد. اگر نمیخواهید به ازای هر کامپوننت، این کدهای تکراری را ایجاد کنید، میتوانید کدهای فوق را در قالب یک کامپوننت مانند زیر ایجاد کنید (با نام دلخواه HandleValidSubmitForm.razor): <EditForm Model="Model" OnValidSubmit="HandleValidSubmit"> @ChildContent?.Invoke(context) <button disabled="@_busy">Submit</button> </EditForm> @code { private bool _busy; [Parameter] public object? Model { get; set; } [Parameter] public EventCallback<EditContext> OnValidSubmit { get; set; } [Parameter] public RenderFragment<EditContext>? ChildContent { get; set; } private async Task HandleValidSubmit(EditContext editContext) { if (_busy) retu; _busy

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

دستوراتی که درون کنسول مینویسیم، تک خطی یا one-linear هستند؛ هر چند میتوان با زدن کلیدهای Shift + Enter دستورات چندخطی هم نوشت یا حتی با گذاشتن semicolon بعد از هر دستور میتوانیم دریک خط چندین دستور را پشتسر هم بنویسیم. اما برای نوشتن دستورات طولانیتر بهتر است دستورات را درون فایلهای جدایی قرار دهیم و از VSCode یا PowerShell ISE (فقط در ویندوز) نیز برای نوشتن اسکریپتها استفاده کرد. اسکریپتهای PowerShell با پسوند ps1 و psm1 (برای نوشتن ماژول) هستند؛ هر چند چندین پسوند دیگر نیز برای فایلهای PowerShell وجود دارند که در اینجا میتوانید لیست آنها را مشاهده کنید. درون یک فایل ps1 امکان نوشتن و ترکیب دستورات مختلف را داریم. همچنین میتوانیم از امکانات زبان سیشارپ هم استفاده کنیم؛ زیرا PowerShell در واقع اپلیکیشنی است که توسط NET Core. و با زبان #C نوشته شدهاست. در نتیجه میتوانیم بگوئیم زبان اسکریپتی که در PowerShell استفاده میشود، یک DSL برای زبان #C است. در PowerShell همه چیز یک آبجکت محسوب میشود. برای تست این مورد میتوانید درون کنسول PowerShell دستور زیر را وارد کنید: PS> "" | Get-Member دستور فوق یک لیست از تمامی توابع و پراپرتیهای نوع System.String را نمایش خواهد داد: TypeName: System.String Name MemberType Definition ---- ---------- ---------- Clone Method System.Object Clone(), System.Object ICloneable.Clone() CompareTo Method int CompareTo(System.Object value), int CompareTo(strin… Contains Method bool Cont

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

همانطور که در قسمت قبل اشاره شد، توابع نیز یکی از ویژگیهای اصلی PowerShell هستند. قبل از بررسی بیشتر توابع بهتر است ابتدا با مفهوم script block آشنا شویم. script blocks به مجموعهایی از دستورات گفته میشود که داخل یک بلاک قرار میگیرند. در واقع هر چیزی داخل {} یک script block محسوب میشود (البته به جز hash tables). به عنوان مثال در کد زیر از یک script block مخصوص، با نام فیلتر استفاده شده است که یک ورودی برای پارامتر FilterScript مربوط به دستور Where-Object میباشد. چیزی که این script block را متمایز میکند، خروجی آن است. به این معنا که خروجی آن باید یک مقدار بولین باشد:  Get-Process | Where-Object { $_.Name -eq 'Dropbox' } script blocks را به صورت مستقیم درون command line هم میتوانیم استفاده کنیم. به محض تایپ کردن } و زدن کلید enter، امکان نوشتن اسکریپتهای چندخطی را درون ترمینال خواهیم داشت. در نهایت با بستن script block و زدن کلید enter، از بلاک خارج خواهیم شد:  PS /Users/sirwanafifi/Desktop> $block = { >> $newVar = 10 >> Write-Host $newVar >> } با اینکار یک بلاک از کد را داخل متغیری با اسم block ذخیره کردهایم. برای فراخوانی این قطعه کد میتوانیم از یک عملگر مخصوص با نام invocation operator یا call operator استفاده کنیم:  PS /Users/sirwanafifi/Desktop> & $block یا حتی میتوانیم از Invoke-Command نیز برای اجرای بلاک استفاده کنیم. همچنین از عملگر & برای فراخوانی یک expression رشتهایی نیز میتوان استفاده کرد:  PS /

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

در C# 11 ارائهی شدهی به همراه NET 7.0.، واژهی کلیدی جدید file، جهت تعریف نوعهای محدود به یک فایل «File Scoped Types» ارائه شدهاست. این واژهی کلیدی را میتوان به تعریف هر نوع دلخواهی مانند class, interface, record, struct, enum, delegate اضافه کرد (منهای خواص، فیلدها و رخدادها؛ البته تا C# 11)، تا آن نوع، دیگر در سایر کلاسهای فایلهای برنامه، قابل دسترسی نباشد و سطح دید استفادهی از آن، تنها محدود به فایل جاری محل قرار گیری آن شود. به این ترتیب میتوان در یک فضای نام مشخص، چندین کلاس همنام را تعریف کرد؛ کاری که در نگارشهای پیشین #C، میسر نبود. بدیهی دیگر نمیتوان یک چنین نوعهایی را با سطوح دسترسی متداول inteal و یا  public، تعریف و ترکیب کرد. یک مثال: نمونهای از نحوهی تعریف و استفادهی از File Scoped Types فرض کنید دو فایل جدید را به نامهای File1.cs و File2.cs به پروژهی جاری اضافه کردهایم. محتوای فایل File1.cs به صورت زیر است: namespace CS11Tests; file static class Post { public static string GetTitle() => "Title from File1.cs"; } inteal static class IntealClassFromFile1 { public static string GetTitle() => Post.GetTitle(); } و محتوای فایل File2.cs به نحو زیر تعریف شدهاست: namespace CS11Tests; file static class Post { public static string GetTitle() => "Title from File2.cs"; } inteal static class IntealClassFromFile2 { public static string GetTitle() => Post.GetTitle(); } اگر دقت کنید، ذیل فضای نام مشخص و ثابت CS11Tests، دو کلاس هم نام Post را داریم که اینبار با واژهی کلیدی file، شروع

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

به صورت پیشفرض، رشتهها در زبان #C، از نوع UTF-16 تعریف شدهاند؛ درحالیکه اکثر رشتهها در دنیای اینترنت و پروتکلهای آن، از نوع UTF-8 هستند. برای کاهش سربار کارآیی این تبدیلها، اکنون در C# 11 میتوانید رشتهها را با پسوند u8 نیز معرفی کنید تا از ابتدای کار، به صورت UTF-8 پردازش شوند. یک مثال: // C# 10 string utf16String = "Hello World"; byte[] array1 = Encoding.UTF8.GetBytes(utf16String); // C# 11 ReadOnlySpan<byte> utf8String = "Hello World"u8; byte[] array2 = utf8String.ToArray(); در اینجا نحوهی تعریف یک رشتهی UTF-8 را توسط پسوند u8 در مثال دوم مشاهده میکنید. این رشته با نوع <ReadOnlySpan<byte معرفی میشود که به همراه عدم نیاز به استفاده از متد Encoding.UTF8.GetBytes قبلی و همچنین تخصیص حافظهی رشتهی UTF-16 آن در مثال اول است. اگر میخواهید معادل آرایهی تغییرپذیر آنرا (mutable array) داشته باشید، باید از متد ()ToArray بر روی آن استفاده کنید. افزایش خوانایی رشتههای UTF-8 در C# 11 یکی دیگر از مزیتهای این روش تعریف، علاوه بر بالا رفتن کارآیی کار با رشتههای UTF-8، بالا بردن امکان خوانایی و درک آنها است. برای مثال AuthStringLiteral مثال زیر، همان معادل آرایهی AuthWithTrailingSpace است که خوانایی بیشتری دارد: ReadOnlySpan<byte> AuthWithTrailingSpace = new byte[] { 0x41, 0x55, 0x54, 0x48, 0x20 }; ReadOnlySpan<byte> AuthStringLiteral = "AUTH "u8; چند مثال دیگر: var helloUtf8 = "hello"u8;// new byte[] { 0x68, 0x65, 0x6c, 0x6c, 0x6f } var dogUtf8 = "dog"u8;// new byte[] { 0x64, 0x6f, 0x67 } var catUtf8 = "cat"u8;// new byte[] { 0x63,

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

تا اینجا با کمک توابع توانستیم PowerShell را به اصطلاح extend کنیم. نوع دیگر دستورات، command letها هستند. این نوع دستورات را با کمک یک زبان داتنتی میتوانیم ایجاد کنیم. به این نوع دستورات complied cmdlet گفته میشود. در بیشتر مواقع با کمک advanced functionها میتوانید بیشتر کارها را انجام دهید؛ چراکه به صورت مستقیم امکان استفاده از داتنت را درون PowerShell دارید. اما شاید ترجیح دهید از سیشارپ یا دیگر زبانها داتنتی برای ایجاد یک تابع استفاده کنید. نحوهی ایجاد یک cmdlet با کمک #C ابتدا یک دایرکتوری جدید را ایجاد کرده و درون آن یک پروژهی از نوع class library را ایجاد کنید. سپس پکیج PowerShellStandard.Library را درون پروژه ایجاد شده با کمک dotnet cli به پروژه اضافه کنید:  mkdir ps_cmdlet_with_csharp && cd "$_" dotnet new classlib dotnet add package PowerShellStandard.Library mv Class1.cs GetHelloCommand.cs در پایان دستورات فوق، نام فایل پیشفرض Class1 را نیز به GetHelloCommand تغییر دادهایم. در ادامه محتویات فایل را اینگونه ویرایش خواهیم کرد:  namespace ps_cmdlet_with_csharp; using System.Management.Automation; [Cmdlet(VerbsCommon.Get, "Hello")] public class GetHelloCommand : PSCmdlet { [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)] public string Name { get; set; } protected override void BeginProcessing() { WriteObject("Start processing"); } protected override void ProcessRecord() { WriteObject("Hello " + Name); } protected override void EndP

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

Raw String Literals، روشی ساده جهت تعریف یک قطعهی متنی، بدون نیاز به escapeهای فراوان و یا تعریف ""های متعدد است؛ برای مثال نوشتن رشتههای تشکیل شدهی از محتوای XML و یا JSON. به این صورت تعریف رشتههای پیچیده، سادهتر شده و قابلیت نگهداری آنها، بهبود خواهد یافت. Raw String Literal با حداقل سه عدد " متوالی، شروع شده و با حداقل سه عدد " متوالی، خاتمه پیدا میکنند: string name = "Vahid", country = "Iran"; string jsonString = $$""" { "Name": {{name}}, "Country": {{country}} } """; Console.WriteLine(jsonString); بدون وجود این قابلیت، معادل واقعی رشتهی فوق را باید به صورت زیر تشکیل داد: "{ "Name": Vahid, "Country": Iran}" و یا امکان درج سادهتر عبارات XML، بدون نیاز به escape قسمتی از آن: string html = """ <body style="normal"> <div class="book-content"> This is information about the "C# 11" book. </body> <footer> This is information about the author of the "C# 11" book. </footer> </element> """; سؤال: اگر در محتوای Raw String Literal تعریف شده، نیاز به سه عدد " متوالی وجود داشت، چه باید کرد؟ اگر به توضیحات فوق دقت کنید، عنوان شد که شروع و پایان Raw String Literals، با «حداقل» سه عدد " همراه است و به این صورت پیاده سازی میشود: - اگر رشتهی شما نیاز به سه "" متوالی داشت، باید raw string literal را با حداقل چهار " شروع و خاتمه دهید. - اگر رشتهی شما نیاز به چهار "" متوال

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

واژهی کلیدی جدید required در C# 11.0، همانند خواص init-only که پیشتر معرفی شدند، با هدف آغاز و نمونه سازی دقیقتر و سادهتر اشیایی است که برای اینکار، به تعاریف ویژهی سازندهی کلاسها وابسته نیستند. امکان نمونه سازی بدون قید و شرط کلاسها تعریف کلاس Article1 را به صورت زیر درنظر بگیرید: public class Article1 { public string Title { get; set; } public string? Subtitle { get; set; } public string Author { get; set; } public DateTime Published { get; set; } } ساختار پروژههای دات نت 7 نیز به صورت پیشفرض به صورت زیر است: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project> یعنی nullable reference types در آنها فعال است. با این فعال بودن، به اخطارهای زیر میرسیم: Non-nullable property 'Title' must contain a non-null value when exiting constructor. Consider declaring the property as nullable. [CS11Tests]csharp(CS8618) Non-nullable property 'Author' must contain a non-null value when exiting constructor. Consider declaring the property as nullable. [CS11Tests]csharp(CS8618) عنوان میکند که خاصیتهای Title و Author، به صورت غیرنالپذیر تعریف شدهاند (و همانند Subtitle نالپذیر نیستند)؛ اما تعریف این کلاس به نحوی است که این مساله را الزامی نمیکند. یعنی میتوان نمونهای از Article1 را ایجاد کرد که در

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

هر کلاسی در #C که از کلاس پایهی System.Attribute مشتق شود، یک Attribute نامیده میشود و مهمترین و هدف و کاربرد آنها، مزین کردن و علامتگذاری سایر نوعها و فیلدها هستند تا بر اساس آنها بتوان کارکردهای بیشتری را در اختیار آن نوعها قرار داد. برای مثال، استفاده از  ویژگیهای JsonProperty و یا JsonPropertyName در حین اعمال serializations و یا در کاربردهای اعتبارسنجی مانند ویژگیهای Required، Range و امثال آنها: public class Student { [JsonPropertyName("id")] public int Id { get; set; } [JsonPropertyName("name")] public string Name { get; set; } } public class WeatherForecast { [Required] public int TemperatureC { get; set; } [MinLength(50)] public string Summary { get; set; } } روش متداول ارسال نوعها به attributes تا پیش از C# 11 تا پیش از C# 11، روش پیاده سازی یک attribute جنریک که بتواند با انواع و اقسام نوعها کار کند، به صورت زیر است: - ارسال یک پارامتر از نوع System.Type به سازندهی attribute - تعریف خاصیتی مانند ParamType در صورت نیاز؛ تا مشخص کند که چه نوعی به سازندهی attribute ارسال شدهاست. مانند مثال فرضی زیر: [AttributeUsage(AttributeTargets.Class)] public class CustomDoNothingAttribute: Attribute { // Note the type parameter in the constructor public CustomDoNothingAttribute(Type t) { ParamType = t; } public Type ParamType { get; } } و سپس با استفاده از عملگر typeof، نوع مدنظر را به سازندهی ویژگی تعریف شده، ارسال میکنیم: [CustomDoNothing(typeof(string))] public class Student {

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 14:10

مقدمه اصلی ترین رکن در طراحی سایت با وردپرس، انتخاب یک قالب مناسب و استاندارد است. وردپرس هم از نظر ظاهری از اهمیت بالای برخوردار است و هم از نظر امنیت و سئو. پس در هنگام انتخاب این قالب برای سایت بهتر است که از قالب وردپرس نوین که به صورت کاملا اختصاصی توسط تیم ایمپرزا فارسی طراحی شده است استفاده کنید. قالب وردپرس نوین در ساختار قالب ایمپرزا پوسته وردپرس مشابه نوین در تمامی سایت ها و سیستم هایی که مدیریت محتوا را برای CMS در دسترس دارند، با کیفیت بالا مطرح می شود. در زمان کمتر و هزینه کمتر با استفاده از قالب وردپرس نوین می توانید به هر آنچه که در یک سایت نیاز است دسترسی پیدا کنید. به زبان ساده تر تصور کنید که برای ساختمانی اسکلت طراحی کرده اید و قصد دارید با توجه به نقشه مورد نظر دیوار کشی را آغاز کنید. وجود پوسته وردپرس مشابه نوین باعث می شود تا دیگر زمان خود را صرف زدن اسکلت و بتن ریزی نکنید و تمامی زمان خود را بر روی طراحی و اجرای آن اختصاص دهید. در این مقاله قصد داریم تا در مورد قالب ورد پرس نوین و ویژگی هایی که در اختیار کاربران خود قرار می دهد صحبت کنیم. قالب وردپرس شبیه آکادمی نوین چیست؟ در ابتدا برای اینکه با ساز و کارها آشنایی بیشتری پیدا کنید بهتر است با مفهوم اصلی وردپرس آشنا شوید. وردپرس در حقیقت یک سیستم مدیریت محتوا است که به صورت رایگان می باشد و هر فردی می تواند آن را برای خود راه اندازی کند. حال چرا در این مقاله به پوسته وردپرس مشابه نوین اشاره شده است؟ زیرا این قالب یکی از انواع قالب های محبوب است و بیشتر مدیران وبسایت ها برای ارتقاء سطح کیفیت سایت خود از این قالب استفاده می کنند. در این زمان کافی است که تنها فایل های مورد نیاز برای وردپرس را بر روی وبسایت

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 13:57

مقدمه قیمت طراحی سایت وردپرسی یکی از فاکتورهای مهمی است که افراد هنگام راه اندازی وب سایت خود به آن توجه می نمایند. اما این مورد تحت تاثیر عوامل متفاوت همانند امکانات وب سایت، تجربه طراح، سفارشی سازی قالب و … متغیر است. شاید برای شما نیز سوال باشد که چرا باید از وردپرس به عنوان سیستم مدیریت محتوا استفاده نمود؟ مزیت های این CMS چیست و چرا باید از آن استفاده نمود؟ در این مقاله قصد داریم تا به این سوالات پاسخ داده و اطلاعات مفیدی در اختیارتان قرار دهیم. وردپرس و مزیت های استفاده از آن: وردپرس یک سیستم مدیریت محتوا است که هم از دید مدیران سایت ها و هم از دید برنامه نویسان یک انتخاب عالی برای راه اندازی و نگهداری از سایت می باشد. وردپرس با زبان برنامه نویسی PHP نوشته شده است و چون امروزه قالب، پلاگین و انجمن های تخصصی زیادی برای آن وجود دارند، توسعه و استفاده از آن را آسان تر نموده است. از جمله دلایل محبوبیت این سیستم مدیریت محتوا می توان به آسانی کار با آن برای افرادی که هیچ دانش کد نویسی ندارند، اشاره نمود. برخی از مزیت های استفاده از وردپرس در زیر لیست شده اند که دلایل اصلی افراد برای انتخاب این CMS هستند: وردپرس برای طراحی بسیار انعطاف پذیر می باشد: این سیستم مدیریت محتوا امکان با توجه به پلاگین های متفاوتی که در بازار دارد، به راحتی سفارشی سازی می گردد. طراح وب سایت می تواند با توجه به سلیقه و نیاز مشتری انواع افزونه ها و پلاگین ها را نصب کرده و یک طراحی ریسپانسیو را پیاده سازی نماید. از سوی دیگر مدیر وب سایت نیز می تواند افراد مختلف با سطوح دسترسی متفاوتی را در نظر بگیرد تا نگهداری از سایت را برعهده بگیرند. در کنار این مزایا باید در نظر داشته باشید که جهت بروز نمودن قالب یا

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 13:57

کلاس طراحی سایت در یزد یک فرصت بی نظیر برای آموزش به صورت حرفه ای است که می توانید از اینترنت و فضای مجازی کسب درآمد کنید. در واقع با این روش آموزش همه افراد می توانند وارد دنیای کسب و کار شده و با طراحی وب سایت در بستر اینترنت درآمد خوبی به دست آورند. معمولاً در سال های گذشته برای طراحی سایت نیاز به برنامه نویسی و آموختن دانش کد نویسی بود، اما با وجود cms وردپرس در حال حاضر دیگر نیاز به استفاده از کد نویسی نیست و با کمک این سیستم مدیریت محتوای رایگان و قالب های آماده می توان در کمترین زمان بهترین سایت را طراحی کرد. مهمترین چیزی که قبل از شروع آموزش های طراحی وب سایت باید به آن توجه کنید، انتخاب یک منبع قابل اعتماد است که تمامی آموزش ها را به صورت اصولی و هدفمند ارائه دهد. چرا که دریافت آموزش مناسب کمک بیشتری به موفقیت بهتر می کند. مجموعه ایمپرزا فارسی یکی از تخصصی ترین گروه ها در زمینه آموزش تخصصی طراحی سایت در یزد است که در حال حاضر با برگزاری کلاس طراحی سایت در یزد می تواند تمامی مهارت و تجربه خود را به دانش پذیران انتقال دهد. وردپرس چیست؟ وردپرس یک سیستم مدیریت محتوا به صورت رایگان است که با کمک آن می توانید پس از نصب بر روی سرور اقدام به راه اندازی سایت کنید. تمامی پروژه سایت بدون نیاز به کدنویسی انجام می شود؛ به همین دلیل با سرعت بالاتری روند طراحی سایت طی می گردد. در حال حاضر cms های متعددی وجود دارد که با کمک آنها می توانید از قالب های آماده استفاده کرده و سایت های مختلفی را راه اندازی کنید. اما در این میان وردپرس جزء قدرتمندترین و محبوب ترین cms هایی است که همه کاربران بسته به نیاز خود می توانند آن را توسعه دهند. مهمترین دلیل محبوبیت این سی ام اس سادگی کار با آن

برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 25 آبان 1401 ساعت: 13:57

در طول همهگیری کووید-19، مشاغل بدون حضور آنلاین به هیچ وجه درآمدی کسب نکردهاند. فروشگاه های مواد غذایی می توانند باز بمانند، اما یک فروشگاه مواد غذایی آنلاین می تواند فروش بسیار بیشتری ایجاد کند. و با بازاریابی دقیق و برنامه ریزی شده و ایجاد مشتریان وفادار، می توانید فروش خود را به طور گسترده افزایش دهید. تقاضا برای تحویل مواد غذایی افزایش یافته است و مشتریان بیش از حد مایل به پرداخت هزینه تحویل برای چنین تجربه خرید ارزانی هستند. فرقی نمیکند که میخواهید سرویس تحویل را در یک فروشگاه فیزیکی موجود ادغام کنید یا اینکه فقط به صورت آنلاین فعالیت میکنید، اکنون زمان انجام آن است. شرکت برنامه نویسی وب نگاه  در توسعه بیش از 3500 طراحی اپلیکیشن iOS و اندروید تجربه دارد. بنابراین، اگر به دنبال طراحی اپلیکیشن موبایل  هستید که به کسب درآمد کمک می کند، با ایده اپلیکیشن خود با ما تماس بگیرید. دریافت مشاوره رایگان از کارشناسان ما را از دست ندهید. 09339017809 توسعه فروشگاه های مواد غذایی آنلاین توسعه یک برنامه برای یک فروشگاه خواربارفروشی آنلاین به مشتریان شما این امکان را میدهد تا آنچه را که میفروشید زیر نظر داشته باشند و زمان و مکان تحویل آن را انتخاب کنند. چرا یک برنامه خرید مواد غذایی برای فروشگاه مواد غذایی شما خوب است؟ کسب و کار و فروش را افزایش دهیداپلیکیشنهای خواربار فروشی آنلاین میتوانند اعتماد مشتری را افزایش دهند، که برای رشد کسبوکار شما ضروری است. مشتریان برچسب های قابل اعتماد و قابل اعتمادی را ترجیح می دهند که کلاس و امکانات بهتری را ارائه می دهند.گزینه های پرداخت مناسب را ارائه دهیدروش های مختلفی وجود دارد که می توانید با استفاده از آنها به راحتی هزینه خ

برچسب: نویسنده: دانلودی تاريخ: شنبه 21 آبان 1401 ساعت: 20:15

ایجاد یک برنامه تلفن همراه با شرکت برنامه نویسی وب نگاه کامل شد. و دقیقاً همانطور که شما می خواهید کار می کند، اما هنوز چیزی کم است. آنطور که تصور می کردید زیبا به نظر نمی رسد. در این مقاله به دلایل فنی این موضوع نمی پردازیم. در عوض، از آنجایی که شما یک برنامه نویس حرفه ای یا طراح UI UX نیستید، بیایید برخی از اصول اولیه طراحی بصری را مرور کنیم تا برنامه شما را زنده کنیم.قبل از اینکه اصول طراحی را مرور کنیم، بیایید ببینیم که دقیقاً چه مشکلی در طراحی شما وجود دارد. شرکت برنامه نویسی وب نگاه  در توسعه بیش از 3500 طراحی اپلیکیشن iOS و اندروید تجربه دارد. بنابراین، اگر به دنبال طراحی اپلیکیشن موبایل  هستید که به کسب درآمد کمک می کند، با ایده اپلیکیشن خود با ما تماس بگیرید. دریافت مشاوره رایگان از کارشناسان ما را از دست ندهید. 09339017809 چرا طراحی اپلیکیشن شما کار نمی کند؟ مقالات زیادی در مورد ذهنی بودن طراحی بصری صحبت می کنند، اما برخی از اصول کلی وجود دارند که می توانند بلوک های سازنده هر طراحی بصری موثر باشند. سلسله مراتبسازگاری + سادگیفضای سفیدسایه برندیک سلسله مراتب را تنظیم کنید سلسله مراتب بصری به کاربر می گوید که به چه ترتیبی به عناصر یک صفحه نگاه کند. این را می توان از طریق قرار دادن اجزای روی صفحه، وزن بصری، اندازه نسبی و رنگ های متضاد به دست آورد. یک چیدمان خوب این ویژگی ها را متعادل می کند و می تواند به صورت بصری به کاربر بگوید که در ابتدا به چه چیزی نگاه کند. مکان: در برخی کشورها از چپ به راست و از بالا به پایین می خوانیم. این ترفند می تواند به شما کمک کند با چیدمان مهم ترین عناصر در بالا سمت چپ و کم اهمیت ترین یا آخرین عناصر در پایین، عناصر خود را در

برچسب: نویسنده: دانلودی تاريخ: شنبه 21 آبان 1401 ساعت: 20:15

اپلیکیشن های موبایل با معرفی ویژگی های انقلابی بخش آموزش را متحول می کنند. شرکتهای برنامه آموزشی فرصتهای بیشتری در فروشگاههای اپلیکیشن پیدا میکنند. تقاضا برای شرکت توسعه اپلیکیشن آموزش در آینده افزایش خواهد یافت. زیرا مدارس، کالجها و مؤسسات آموزشی جدید با چنین شرکتهای اپلیکیشن همکاری میکنند. مدارس و کالجها از چنین برنامههای آموزشی پشتیبانی میشوند و کلاسهای آنلاین خود را کاملاً با چنین برنامههایی برگزار میکنند. حتی اگر همهگیری ویروس کرونا در آینده شیوع پیدا کند، دانشآموزان در زمینه تدریس خصوصی و شهریه با مشکلی مواجه نخواهند شد. بنابراین، محبوبیت راه حل توسعه برنامه آموزشی در آینده افزایش خواهد یافت. در این وبلاگ می خواهیم تأثیر برنامه های تلفن همراه را در بخش آموزش بررسی کنیم. ما همچنین به مؤلفه های مختلف آموزش آنلاین که جهان را تغییر می دهند نگاه خواهیم کرد.عواملی که آموزش آنلاین را تشکیل می دهند شرکت برنامه نویسی وب نگاه  در توسعه بیش از 3500 طراحی اپلیکیشن iOS و اندروید تجربه دارد. بنابراین، اگر به دنبال طراحی اپلیکیشن موبایل  هستید که به کسب درآمد کمک می کند، با ایده اپلیکیشن خود با ما تماس بگیرید. دریافت مشاوره رایگان از کارشناسان ما را از دست ندهید. 09339017809 آموزش آنلاین تجربه دانش آموزان را ساده می کند و توانایی آنها را برای یادگیری بهبود می بخشد. پلتفرم های آموزشی آنلاین یک مفهوم خاص را به روشی ساده و خلاقانه توضیح می دهند. دانش آموزان آنچه را که یاد می گیرند مدت بیشتری حفظ می کنند زیرا چنین پلتفرم های آموزشی آنلاین به طور موثر همه مفاهیم را به صورت بصری توضیح می دهند. بنابراین شرکت ها برای توسعه اپلیکیشن های آموزشی به شرکت توسعه اپلیک

برچسب: نویسنده: دانلودی تاريخ: شنبه 21 آبان 1401 ساعت: 20:15

صفحه بندی

خبرنامه